package com.ruoyi.service;



import com.ruoyi.domain.vo.*;

import com.ruoyi.system.domain.*;

import java.util.List;
import java.util.Map;


public interface IUserCenterService {

    //根据账号查询用户信息
    public UserInfoVo selectUserInfoByAccount(String account);

    //根据openid查询用户信息
    public UserInfoVo selectUserInfoByOpenid(String openid);

    //根据微信查询用户信息
    public UserInfoVo selectUserInfoByWechat(String wechat);

    //更新用户信息
    public int updateUserInfo(UserInfo userInfo);

    //根据userID查询用户低碳行为记录
    public List<BehaviorRecode> selectBehaviorByUserID(Long userId, Long pageNum, Long pageSize);
//
    //根据userID查询低碳活动记录
    public List<ActivityLogs> selectActivityLogsByUserID(Long userId, Long pageNum, Long pageSize);

    //根据userID查询快递地址
    public List<Address> selectAddressByUserId(Long userId);

    //根据userID按照用户减碳量返回用户信息
    public  List<UserInfoVo> selectUserInfoByReduceCo2();

    //根据userID按照用户日减碳量返回用户信息
    public List<UserInfoVo> getUserInfoByReduceCo2Day(Long pageNum,Long pageSize);

    //根据userID按照用户月减碳量返回用户信息
    public List<UserInfoVo> getUserInfoByReduceCo2Month(Long pageNum,Long pageSize);

    //根据组织ID查询组织信息
    public List<OrganizationVo>selectOrganizationList(Long pageNum,Long pageSize);

    //按照日组织减碳量返回组织信息
    public List<OrganizationVo>selectOrganizationListDay(Long pageNum,Long pageSize);

    //按照组织月减碳量返回组织信息
    public List<OrganizationVo>selectOrganizationListMonth(Long pageNum,Long pageSize);

    //根据用户id返回用户待付款订单列表
    public List<NoPayOrderVo> selectNoPayOrder(Long userId, Long pageNum, Long pageSize);

    String getPointsRule();

    List<UserInfoVo> getUserList();

    void updateDefaultAddress(Long userId, Long addressId1);

    List<PayedOrderVo> selectPayedOrder(Long userId, Long pageNum, Long pageSize, String goodsName);

    Map<String, Object> selectOrderByGoodsName(Long userId, String goodsName, Long pageNum, Long pageSize);

    Long getUserPoints(Long userId);

    Map<String, Object> getConversionRate();

    void confirmReceipt(Long orderItemId);

    void addGoodsEvaluate(GoodsEvaluate goodsEvaluate);

    void updateGoodsEvaluate(GoodsEvaluate goodsEvaluate);

    GoodsEvaluate getGoodsEvaluateByOrderItemId(Long orderItemId);

    void deleteGoodsEvaluateByOrderItemId(Long orderItemId);

    void addRefund(Refund refund);

    Long getMaxRefundNum(Long orderItemId);

    List<Refund> getRefundRecordByOrderItemId(Long orderItemId);

    Long selectActivityLogCountByUserID(Long userId);

    Long selectBehaviorCountByUserID(Long userId);

    List<OrderInfo> getOrderInfoList(Long userId, Long pageNum, Long pageSize);

    Long getOrderInfoCount(Long userId);

    void insertUserInfo(UserInfoVo userInfo);

    Map<String, Object> getUserReduceCo2(Long userId);

    void reSubmitRefund(Refund refund);

    void deleteAddressByAddressId(Long addressId);

    boolean hasPassword(Long userId);

    String changePassword(Long userId, String originalPassword, String newPassword);

    String getSessionKey(Long userId);

}
